#pragma once
#ifndef __ECG_H__
#define __ECG_H__
#ifdef USE_ECG
#include <stdbool.h>
#include "platform_toolchain.h"
#include <stdint.h>
/**
 * @brief
 *
 */
void ecg_init(void);

/**
 * @brief do_nothing
 *
 */
PLATFORM_FORCEINLINE void ecg_deinit(void)
{
}

/**
 * @brief 仅记录状态，实际开关，扔到process里处理
 *
 */
void ecg_start(void);

/**
 * @brief 仅记录状态，实际开关，扔到process里处理
 *
 */
void ecg_stop(void);

/**
 * @brief
 *
 */
void ecg_process(void);

/**
 * @brief
 *
 * @return true
 * @return false
 */
bool is_ecg_start(void);

/**
 * @brief
 *
 * @param buffer
 * @param size [in] 尝试取多少数据 [out] 取出来多少数据
 * @param start_index [out] 取出来的第一个数据，是这次ecg测量的第N个数据
 */
void ecg_get_latest_data(uint8_t *buffer, int32_t *size, int *start_index);

/**
 * @brief
 *
 * @param state
 */
void ecg_control_from_app(uint8_t state);

void ecg_upload_ppg(uint32_t ppg);

void ecg_wear_state_change(bool is_wear);

void ecg_upload_control_state(bool is_start);

uint8_t ecg_get_measure_remain_second(void);

bool ecg_is_lead(void);

bool ppg_is_lead(void);

#endif //!<#ifdef USE_ECG
#endif //!< __ECG_H__
